package com.attendcollatesys.service.impl;

import com.attendcollatesys.entity.*;
import com.attendcollatesys.mapper.ProcessMapper;
import com.attendcollatesys.service.ProcessService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.*;

@Service
public class ProcessServiceImpl implements ProcessService {

    @Autowired
    ProcessMapper processMapper;


    //计算结果集，包含了考勤表，考勤异常表的数据
    @Override
    public String ProcessMonth(Map params) throws Exception {
        //获取时间Map
        //获取计算数据
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        //结果集存放的List
        List<ATLeaveExtraDetail> resultPOS = new ArrayList<>();

        //获取所有的人的名字
        //之后会在每一个工作日循环人名，找缺勤的人

        //获取开始时间与结束时间
        String tStartDate = (String) params.get("startDate");
        String tEndDate = (String) params.get("endDate");

        if (ChronoUnit.DAYS.between(LocalDate.parse(tStartDate), LocalDate.parse(tEndDate)) < 0){
            throw new Exception("起始日期小于终止日期!");
        }
        //准备循环判断所需要的数据
        LocalDate tsd = LocalDate.parse(tStartDate) ;
        LocalDate ted = LocalDate.parse(tEndDate);
        //转换用的范式


        //记录全部日
        List<String> wordDay =  new ArrayList<>();
        for(tsd = LocalDate.parse(tStartDate) ;ChronoUnit.DAYS.between(tsd,ted) >= 0;tsd = tsd.plusDays(1)){
            wordDay.add(tsd.toString());
        }






        //循环过程中，工作日循环与签到日期循环同时进行

        //开始循环，计算结束之后，记录到数据库表。




        return null;
    }
}
